package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 预约挂号对象 appointment
 *
 * @author ruoyi
 * @date 2025-05-14
 */
public class Appointment extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 预约ID */
    private Long id;

    /** 预约单号 */
    @Excel(name = "预约单号")
    private String appointmentNo;

    /** 用户ID */
    @Excel(name = "用户ID")
    private Long userId;

    /** 就诊人ID */
    @Excel(name = "就诊人ID")
    private Long patientId;

    /** 医院ID */
    @Excel(name = "医院ID")
    private Long hospitalId;
    private String hospitalName;

    /** 医院地址ID */
    @Excel(name = "医院地址ID")
    private Long hospitalAddress;
    private String hospitalAddressName;

    /** 科室ID */
    @Excel(name = "科室ID")
    private Long departmentId;
    private String departmentName;

    /** 医生ID */
    @Excel(name = "医生ID")
    private Long doctorId;
    private String doctorName;

    /** 医生职称ID */
    @Excel(name = "医生职称ID")
    private Long jobTitle;
    private String jobTitleName;

    /** 排班ID */
    @Excel(name = "排班ID")
    private Long scheduleId;

    /** 候诊时间 */
    @Excel(name = "候诊时间")
    private String htime;

    /** 门诊时间段 */
    @Excel(name = "门诊时间段")
    private String period;

    /** 挂号费 */
    @Excel(name = "挂号费")
    private BigDecimal registrationFee;

    /** 预约时间 */
    @Excel(name = "预约时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date visitDate;

    /** 挂号状态：1待就诊，2已就诊，3已取消 */
    @Excel(name = "挂号状态：1待就诊，2已就诊，3已取消")
    private Long status;

    /** 挂号类型：普通号、专家号、特需号等 */
    @Excel(name = "挂号类型：普通号、专家号、特需号等")
    private String registrationType;

    /** 取消时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "取消时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date cancelTime;

    /** 取消原因 */
    @Excel(name = "取消原因")
    private String cancelReason;

    /** 就诊卡号 */
    @Excel(name = "就诊卡号")
    private String cardNo;

    /** 创建人 */
    @Excel(name = "创建人")
    private String createUser;

    /** 更新人 */
    @Excel(name = "更新人")
    private String updateUser;

    @Override
    public String toString() {
        return "Appointment{" +
                "id=" + id +
                ", appointmentNo='" + appointmentNo + '\'' +
                ", userId=" + userId +
                ", patientId=" + patientId +
                ", hospitalId=" + hospitalId +
                ", hospitalName='" + hospitalName + '\'' +
                ", hospitalAddress=" + hospitalAddress +
                ", hospitalAddressName='" + hospitalAddressName + '\'' +
                ", departmentId=" + departmentId +
                ", departmentName='" + departmentName + '\'' +
                ", doctorId=" + doctorId +
                ", doctorName='" + doctorName + '\'' +
                ", jobTitle=" + jobTitle +
                ", jobTitleName='" + jobTitleName + '\'' +
                ", scheduleId=" + scheduleId +
                ", htime='" + htime + '\'' +
                ", period='" + period + '\'' +
                ", registrationFee=" + registrationFee +
                ", visitDate=" + visitDate +
                ", status=" + status +
                ", registrationType='" + registrationType + '\'' +
                ", cancelTime=" + cancelTime +
                ", cancelReason='" + cancelReason + '\'' +
                ", cardNo='" + cardNo + '\'' +
                ", createUser='" + createUser + '\'' +
                ", updateUser='" + updateUser + '\'' +
                '}';
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getAppointmentNo() {
        return appointmentNo;
    }

    public void setAppointmentNo(String appointmentNo) {
        this.appointmentNo = appointmentNo;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public Long getPatientId() {
        return patientId;
    }

    public void setPatientId(Long patientId) {
        this.patientId = patientId;
    }

    public Long getHospitalId() {
        return hospitalId;
    }

    public void setHospitalId(Long hospitalId) {
        this.hospitalId = hospitalId;
    }

    public String getHospitalName() {
        return hospitalName;
    }

    public void setHospitalName(String hospitalName) {
        this.hospitalName = hospitalName;
    }

    public Long getHospitalAddress() {
        return hospitalAddress;
    }

    public void setHospitalAddress(Long hospitalAddress) {
        this.hospitalAddress = hospitalAddress;
    }

    public String getHospitalAddressName() {
        return hospitalAddressName;
    }

    public void setHospitalAddressName(String hospitalAddressName) {
        this.hospitalAddressName = hospitalAddressName;
    }

    public Long getDepartmentId() {
        return departmentId;
    }

    public void setDepartmentId(Long departmentId) {
        this.departmentId = departmentId;
    }

    public String getDepartmentName() {
        return departmentName;
    }

    public void setDepartmentName(String departmentName) {
        this.departmentName = departmentName;
    }

    public Long getDoctorId() {
        return doctorId;
    }

    public void setDoctorId(Long doctorId) {
        this.doctorId = doctorId;
    }

    public String getDoctorName() {
        return doctorName;
    }

    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }

    public Long getJobTitle() {
        return jobTitle;
    }

    public void setJobTitle(Long jobTitle) {
        this.jobTitle = jobTitle;
    }

    public String getJobTitleName() {
        return jobTitleName;
    }

    public void setJobTitleName(String jobTitleName) {
        this.jobTitleName = jobTitleName;
    }

    public Long getScheduleId() {
        return scheduleId;
    }

    public void setScheduleId(Long scheduleId) {
        this.scheduleId = scheduleId;
    }

    public String getHtime() {
        return htime;
    }

    public void setHtime(String htime) {
        this.htime = htime;
    }

    public String getPeriod() {
        return period;
    }

    public void setPeriod(String period) {
        this.period = period;
    }

    public BigDecimal getRegistrationFee() {
        return registrationFee;
    }

    public void setRegistrationFee(BigDecimal registrationFee) {
        this.registrationFee = registrationFee;
    }

    public Date getVisitDate() {
        return visitDate;
    }

    public void setVisitDate(Date visitDate) {
        this.visitDate = visitDate;
    }

    public Long getStatus() {
        return status;
    }

    public void setStatus(Long status) {
        this.status = status;
    }

    public String getRegistrationType() {
        return registrationType;
    }

    public void setRegistrationType(String registrationType) {
        this.registrationType = registrationType;
    }

    public Date getCancelTime() {
        return cancelTime;
    }

    public void setCancelTime(Date cancelTime) {
        this.cancelTime = cancelTime;
    }

    public String getCancelReason() {
        return cancelReason;
    }

    public void setCancelReason(String cancelReason) {
        this.cancelReason = cancelReason;
    }

    public String getCardNo() {
        return cardNo;
    }

    public void setCardNo(String cardNo) {
        this.cardNo = cardNo;
    }

    public String getCreateUser() {
        return createUser;
    }

    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }

    public String getUpdateUser() {
        return updateUser;
    }

    public void setUpdateUser(String updateUser) {
        this.updateUser = updateUser;
    }
}
